信息安全加密技术--Polybius密码

 

         1、 也称棋盘密码,是利用波利比奥斯方阵进行加密的密码方式,ADFGVX密码是德军在第一次世界大战中使用的栏块密码。事实上,它是早先一种密码 ADFGX 的增补版。1918年3月Fritz Nebel上校发明了这种密码,并提倡使用。它结合了改良过的Polybius方格替代密码与单行换位密码。这个密码以使用于密文当中六个字母 A, D, F, G, V, X命名。ADFGVX 是被法国陆军中尉 Georges Painvin 所破解的。以古典密码学的标准来说,此密码破解的工作是属于格外困难的,在这期间,Painvin 更因此健康蒙受了严重损伤。他破解的方法是依靠于找到多份开头相同的讯息,这表示说它们是被相同的分解钥匙和移位钥匙加密的。 

         2、用一套错综复杂的字母表填满波利比奥斯方阵图1 波利比奥斯方阵在方阵中,将i和j视为同一个字符,使字母数量符合5*5格

图1 波利比奥斯方阵

 

         3、为何选择ADFGX?

                                |:他们译成摩斯码时不容易混淆,可以降低传输错的几率

                               ||:使用这个方格,找出明文字母在这个方格的位置,再以那个字母所在的栏名称和列名称代替这个字母 

         4、示例:

                        加密时可以在表格中找到明文,然后使用明文所在的行字符和列字符代替,比如明文为g,则密文为GA,明文为a,则密文为 AF。解密时只需在密码表里边找到                               行列所对应的字符就可以解密,比如密文为AFAD,则明文为AT,比如密文为XF,则明文为e

 

                   明文:A     T     T   A    C   K    A    T    O    N  C    E 

                   密文:AF AD AD AF GF DX AF AD DF FX GF XF 

         5、算法实现: 实现该方法加密有两种思路:

                (1)完全使用替代法 可以将表格里边的25个字母使用replaceAll()函数进行代替操作,在解密时使用同样的操作即可 

部分代码如下所示:

          加密部分:

 

str_p=str_p.replace("b","AA:");str_p=str_p.replace("t","AD:");
str_p=str_p.replace("a","AF:");str_p=str_p.replace("l","AG:");
str_p=str_p.replace("p","AX:");str_p=str_p.replace("d","DA:");
str_p=str_p.replace("h","DD:");str_p=str_p.replace("o","DF:");
str_p=str_p.replace("z","DG:");str_p=str_p.replace("k","DX:");	

 

         解密部分:

 

str_c=str_c.replace("AF:","a");str_c=str_c.replace("AG:","l");
str_c=str_c.replace("AX:","p");str_c=str_c.replace("DA:","d");
str_c=str_c.replace("DD:","h");str_c=str_c.replace("DF:","o");
str_c=str_c.replace("DG:","z");str_c=str_c.replace("DX:","k");
str_c=str_c.replace("FA:","q");str_c=str_c.replace("FD:","f");

 

                (2)使用for循环判断 首先定义一个二维数组,用于实现密码表的保存,设为biao[6][6],然后将字符写入到表格里边,接着将用户输入的明文转化为字符数组str_p[],    对明文进行遍历,使用判断条件进行对字符进行判断,如果str_p[k]==biao[i][j],则str_c[n++]=biao[i][0]+biao[0][j],循环至加密完所有明文,在解密时,可以循环判断biao[i][0]==str_c[k]&&str_c[k+1]==biao[0][j],如果相等,则使得str_p[m++]=biao[i][j],这样就完成了加解密。 

 

          6、加解密演示:

  图 1要加密的内容

图2 加密后的内容

 图3 恢复后的内容

 

以上就是Polybius加解密的实现。

 

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

suwu150

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值